n,k=map(int,input().split())
if k>n**2:
print(-1)
else:
m=n
while (k-2*n+1)>=0 and k>0 and n>0:
k-=2*n-1
n-=1
matrix=[[0 for _ in range(n)] for _ in range(n)]
if k%2==1:
x=k//2+1
for _ in range(x):
matrix[0][_],matrix[_][0]=1,1
else:
x=k//2
if n>1 and k>0:
matrix[1][1]=1
for _ in range(x):
matrix[0][_],matrix[_][0]=1,1
Matrix=[[1]*m]*(m-n)+[[1]*(m-n)+matrix[_] for _ in range(n)]
for i in range(m):
for j in Matrix[i]:
print(j,end=' ')
print('')
770A - New Password | 1646B - Quality vs Quantity |
80A - Panoramix's Prediction | 1354B - Ternary String |
122B - Lucky Substring | 266B - Queue at the School |
1490A - Dense Array | 1650B - DIV + MOD |
1549B - Gregor and the Pawn Game | 553A - Kyoya and Colored Balls |
1364A - XXXXX | 1499B - Binary Removals |
1569C - Jury Meeting | 108A - Palindromic Times |
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |